import { $t } from '@vben/locales'
import type { Ref } from 'vue'
import { computed, unref } from 'vue'

export function useUploadType({
    acceptRef,
    helpTextRef,
    maxNumberRef,
    maxSizeRef
}: {
    acceptRef: Ref<string[]>
    helpTextRef: Ref<string>
    maxNumberRef: Ref<number>
    maxSizeRef: Ref<number>
}) {
    // 文件类型限制
    const getAccept = computed(() => {
        const accept = unref(acceptRef)
        if (accept && accept.length > 0) {
            return accept
        }
        return []
    })
    const getStringAccept = computed(() => {
        return unref(getAccept)
            .map((item) => {
                return item.indexOf('/') > 0 || item.startsWith('.') ? item : `.${item}`
            })
            .join(',')
    })

    // 支持jpg、jpeg、png格式，不超过2M，最多可选择10张图片，。
    const getHelpText = computed(() => {
        const helpText = unref(helpTextRef)
        if (helpText) {
            return helpText
        }
        const helpTexts: string[] = []

        const accept = unref(acceptRef)
        if (accept.length > 0) {
            helpTexts.push($t('hook.useUpload.supportAccept', [accept.join(',')]))
        }

        const maxSize = unref(maxSizeRef)
        if (maxSize) {
            helpTexts.push($t('hook.useUpload.uploadLimit', [maxSize]))
        }

        const maxNumber = unref(maxNumberRef)
        if (maxNumber && maxNumber !== Infinity) {
            helpTexts.push($t('hook.useUpload.uploadLimitNum', [maxNumber]))
        }
        return helpTexts.join('，')
    })
    return { getAccept, getStringAccept, getHelpText }
}
